package com.aaa.qy127.service.impl;

import com.aaa.qy127.dao.ChuKuCheckDao;
import com.aaa.qy127.entity.ChuKuCheck;
import com.aaa.qy127.service.ChuKuCheckService;
import com.aaa.qy127.util.CodeAndMsg;
import com.aaa.qy127.util.Result;
import com.sun.org.apache.bcel.internal.classfile.Code;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;
import java.util.Map;

@Service("chuKuCheckServiceImpl")
public class ChuKuCheckServiceImpl implements ChuKuCheckService {

    @Resource(name = "chuKuCheckDaoImpl")
    private ChuKuCheckDao chuKuCheckDao;

    /**
     * 查询 所有的出库 记录表中的信息 并 分页  模糊查询
     * @param chuKuCheck
     * @return
     */
    public Result getAllChuKuCheck(ChuKuCheck chuKuCheck){
        List<Map<String, Object>> allChuKuCheck = chuKuCheckDao.getAllChuKuCheck(chuKuCheck);
        int count = chuKuCheckDao.getAllCount(chuKuCheck);
        Result result = new Result(count, allChuKuCheck);
        return result;
    }

    /**
     * 查询所有的 出库记录 详情 表中的 未 审核 或者 审核没有成功 的 信息 并分页
     * @param chuKuCheck
     * @return
     */
    @Override
    public Result getChuKuCheck(ChuKuCheck chuKuCheck) {
        List<Map<String, Object>> chuKuCheck1 = chuKuCheckDao.getChuKuCheck(chuKuCheck);
        int count = chuKuCheckDao.getCount(chuKuCheck);
        Result result = new Result(count, chuKuCheck1);
        return result;
    }

    /**
     * 审核 通过 之后 将 出库 记录表中的内容 添加 到出库表中
     * 再将 出库 记录详情表中的 内容 添加到 出库详情表中
     * @param ckjlid
     * @param status
     * @return
     */
    @Override
    public CodeAndMsg tongGuo(String ckjlid, String status) {
        //1、修改 出库记录表中的 状态
        int i = chuKuCheckDao.updateStatus(ckjlid, status);
        //2、向 出库记录表中 添加 出库时间
        int i1 = chuKuCheckDao.updateCdate(ckjlid);
        //3、根据 ckjlid 查询出 出库记录表中的信息
        List<Map<String, Object>> oneChuKuJLByckjlid = chuKuCheckDao.getOneChuKuJLByckjlid(ckjlid);
        //4、将 查询到的 出库记录表中的信息 插入到 出库表中
        int i2 = chuKuCheckDao.insertOneChuKu(oneChuKuJLByckjlid);
        //5、根据ckjlid 查询出 出库记录 详情表中的 信息
        List<Map<String, Object>> allChuKuXQByckjlid = chuKuCheckDao.getAllChuKuXQByckjlid(ckjlid);
        //6、将 查询到的 出库记录详情表中的 信息 插入到 出库详情表中
        chuKuCheckDao.insertAllChuKuXQ(allChuKuXQByckjlid,i2);
        //7、按照查询到的 出库记录表中的 bookid 查询到 书籍的数量 和 出库 该书籍的数量
        List<List> allCountByBookid = chuKuCheckDao.getAllCountByBookid(allChuKuXQByckjlid);
        //8、按照 查询出来的 bookid 和 书籍数量  和 该书籍出库的 数量  修改  书籍的数量
        chuKuCheckDao.updateCountByBookidAndCount(allCountByBookid);

        CodeAndMsg codeAndMsg = new CodeAndMsg();
        if (i2>0){
            codeAndMsg.setCode(1001);
            codeAndMsg.setMsg("审核通过成功");
        }else {
            codeAndMsg.setCode(1002);
            codeAndMsg.setMsg("审核通过失败");
        }
        return codeAndMsg;
    }

    /**
     * 通过 ckjlid 修改 状态 和 时间 和 备注的值
     * @param bz
     * @param ckjlid
     * @return
     */
    @Override
    public CodeAndMsg buguo(String bz, String ckjlid) {
        int i = chuKuCheckDao.updateStatusByckjlid(bz, ckjlid);
        CodeAndMsg codeAndMsg = new CodeAndMsg();
        if (i>0){
            codeAndMsg.setCode(1001);
            codeAndMsg.setMsg("审核不通过成功");
        }else {
            codeAndMsg.setCode(1002);
            codeAndMsg.setMsg("审核不通过失败");
        }
        return codeAndMsg;
    }

    /**
     * 查询 所有的 出库记录表中 出库审核未 通过的 信息
     * @param chuKuCheck
     * @return
     */
    @Override
    public Result getAllnotChuKuCheck(ChuKuCheck chuKuCheck) {
        int allNotChuKuCheckCount = chuKuCheckDao.getAllNotChuKuCheckCount(chuKuCheck);
        List<Map<String, Object>> allNotChuKuCheck = chuKuCheckDao.getAllNotChuKuCheck(chuKuCheck);
        Result result = new Result(allNotChuKuCheckCount,allNotChuKuCheck);
        return result;
    }
}
